package Collection;

import java.util.ArrayList;
import java.util.List;

/**
 * List获取子集操作:
 */
public class ListDemo3 {
    public static void main(String[] args) {
        List<Integer> list = new ArrayList<>();//因为list集合是引用类型，Object对象，int是基本类型，所以必须要用包装类
        for (int i = 0; i < 10; i++) {
            list.add(i * 10);
        }
        System.out.println("list:" + list);//list:[0, 10, 20, 30, 40, 50, 60, 70, 80, 90]
        List<Integer> subList = list.subList(3, 8);//获取下标3-7的子集
        System.out.println(subList);//[30, 40, 50, 60, 70]

        //将子集每个元素扩大10倍
        for(int i =0;i<subList.size();i++){
            subList.set(i,subList.get(i)*10);
        }

        System.out.println("subList:"+subList);//subList:[300, 400, 500, 600, 700]
        //对子集的操作就是对原集合对应的操作
        System.out.println("list:" + list);//list:[0, 10, 20, 300, 400, 500, 600, 700, 80, 90]
        System.out.println("----------");
        list.set(3,1000);//将原集合下标为3的元素改为1000
        System.out.println("list:" + list);//list:[0, 10, 20, 1000, 400, 500, 600, 700, 80, 90]
        //原集合数据改变，子集数据也跟着变
        System.out.println("subList:"+subList);//subList:[1000, 400, 500, 600, 700]

        list.remove(0);
        System.out.println("list:"+list);//[10, 20, 1000, 400, 500, 600, 700, 80, 90]
        //原集合长度改变后，子集将不能进行任何操作了，若操作则发生异常，但是可以重新获取子集
        //System.out.println("subList:"+subList);


    }
}
